home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 September / PCWorld_2008-09_cd.bin / v cisle / sadanastroju / footiefox-2.1.2-fx.xpi / chrome / footiefox.jar / content / footiefox / wizard.js < prev    next >
Text File  |  2008-05-28  |  14KB  |  305 lines

  1. /* ***** BEGIN LICENSE BLOCK *****
  2. EULA
  3.  
  4. Terms of use
  5.  
  6. The FootieFox - Boris Ruf and Jan Schulz-Hofen GbR (ôFootieFoxö) grants you the non-transferable, non-exclusive and revocable right to use the FootieFox Software free of charge, for your personal, non-commercial use only, subject to this licensing agreement. However, you may not use the FootieFox Software in any manner that could overburden, impair or damage the FootieFox Web Service (e.g., you are not allowed to use the FootieFox Software in an automated manner).
  7.  
  8. Intellectual Property
  9.  
  10. After obtaining written consent of FootieFox by e-mail (contact@footiefox.com) you are permitted to offer the FootieFox Software as a whole, without any modifications and free of charge for download on your website other than footiefox.com. You may not lease, rent or sell the FootieFox Software or the information presented to you through the FootieFox Software. Furthermore, you may not sublicense or otherwise transfer any right in the FootieFox Software. You agree not to modify, adapt, translate, decompile, reverse engineer, disassemble or otherwise attempt to derive source code from the FootieFox Software. Distributing or creating derivative works based on the FootieFox Software is expressly not permitted. You also agree to not remove, obscure, or alter FootieFoxÆ and or any third partyÆs copyright notice, trademarks, or other proprietary rights notices presented through or contained in the FootieFox Software.
  11.  
  12. Disclaimer of Warranties
  13.  
  14. The FootieFox Software is provided free of charge and with no warranties whatsoever. FootieFox and any third party who provides its service through the FootieFox Software disclaim any responsibility for any harm resulting from the use of the FootieFox Software and/or any service provided by any third party through the FootieFox Software.
  15.  
  16. THE FOOTIEFOX SOFTWARE IS PROVIDED ôAS ISö WITH ALL FAULTS AND WITH NO WARRANTIES WHATSOEVER. FOOTIEFOX EXPRESSLY DISCLAIMS ALL WARRANTIES OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES THAT THE PRODUCT IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE AND NON-INFRINGING. FOOTIEFOX AND THIRD PARTIES WHO PROVIDE SERVICE THROUGH THE FOOTIEFOX SOFTWARE DISCLAIM ANY WARRANTIES REGARDING THE SECURITY, RELIABILITY, TIMELINESS, AND PERFORMANCE OF THE FOOTIEFOX SOFTWARE AND/OR THE INFORMATION PRESENTED TO YOU THROUGH THE FOOTIEFOX SOFTWARE.
  17.  
  18. YOU UNDERSTAND AND AGREE THAT YOU BEAR ENTIRE RISK AS TO THE FITNESS, THE QUALITY AND THE PERFORMANCE OF THE PRODUCT AND THAT YOU WILL BE SOLELY RESPONSIBLE FOR ANY DAMAGES TO YOUR COMPUTER SYSTEM OR LOSS OF DATA THAT RESULTS FROM THE DOWNLOAD OR USE OF THE FOOTIEFOX SOFTWARE. IN SOME COUNTRIES THE EXCLUSION OR LIMITATION OF IMPLIED WARRANTIES IS NOT ALLOWED, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
  19.  
  20. Limitation of Liability
  21.  
  22. TO THE EXTENT PERMITTED BY LAW, FOOTIEFOX OR ANY THIRD PARTY WILL NOT BE LIABLE FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES ARISING OUT OF OR IN ANY WAY RELATING TO THIS LICENSING AGREEMENT OR THE USE OF OR INABILITY TO USE THE FOOTIEFOX SOFTWARE, INCLUDING WITHOUT LIMITATION DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, LOST PROFITS, LOSS OF DATA, AND COMPUTER FAILURE OR MALFUNCTION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND REGARDLESS OF THE THEORY (E.G. CONTRACT OR TORT) UPON WHICH SUCH CLAIM IS BASED. IN SOME COUNTRIES THE EXCLUSION OR LIMITATION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES IS NOT ALLOWED, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
  23.  
  24. Other Terms
  25.  
  26. The present license agreement will be governed by and construed in accordance with the laws of the Federal Republic of Germany and shall not be governed by the United Nations Convention on the International Sale of Goods. The courts of Berlin shall have exclusive jurisdiction.
  27.  
  28. If any part of this license agreement is held invalid or unenforceable, that part will be construed to reflect the partiesÆ original intent, and the remaining portions will remain in full force and effect.
  29.  
  30. * ***** END LICENSE BLOCK ***** */
  31.  
  32.  
  33.  
  34. function ffWizard () {
  35.  
  36.     return this;
  37. }
  38.  
  39.  
  40. ffWizard.prototype =
  41. {
  42.  
  43. init: function() {
  44.     
  45.     document.documentElement.getButton("next").disabled=true;
  46.     this.dictionary = document.getElementById("stringbundle_dictionary");
  47.     
  48.     var gDBTPrefService = Components.classes["@mozilla.org/preferences-service;1"]
  49.         .getService(Components.interfaces.nsIPrefService);
  50.  
  51.     var general = gDBTPrefService.getBranch("general.useragent.");
  52.     var locale = general.getCharPref("locale");
  53.     
  54.     this.applyLanguagePackage(locale);
  55.     
  56.     var iframe = document.getElementById("eula-frame");
  57.     
  58.     
  59.     //overload english EULA
  60.     if (locale=="de" || locale.toLowerCase()=="de-de" || locale.toLowerCase()=="de-at" || locale.toLowerCase()=="de-li" || locale.toLowerCase()=="de-lu" || locale.toLowerCase()=="de-ch") {
  61.         iframe.setAttribute("src","chrome://footiefox/locale/de-DE/footiefox/EULA.xhtml");
  62.         
  63.         var label = document.getElementById("ff_wizard_eulapage_text2");
  64.         label.setAttribute("href", "http://de.footiefox.com/pages/privacy/");
  65.     }
  66.     
  67.     var radio_decline = document.getElementById("ff_wizard_eulapage_license_decline");
  68.     radio_decline.focus();
  69.     
  70.     this.prefNode = gDBTPrefService.getBranch("extensions.footiefox.");
  71.     
  72.     //former installation of FootieFox detected
  73.     if (this.prefNode.prefHasUserValue("tmpdir")) {
  74.         
  75.         var notice = document.getElementById("ff_wizard_donepage_text2");
  76.         notice.setAttribute("hidden", false);
  77.     
  78.     }
  79.     
  80.     var listbox = document.getElementById("ff_wizard_integrationpage_toolbar_listbox");
  81.     var partners = document.getElementById("partners-data-bundle");
  82.     var partnersEnum = partners.strings;
  83.     while (partnersEnum.hasMoreElements()) {
  84.     
  85.         try {
  86.  
  87.             var element = partnersEnum.getNext();
  88.  
  89.             var key = element.QueryInterface(Components.interfaces.nsIPropertyElement).key;
  90.             var value = element.QueryInterface(Components.interfaces.nsIPropertyElement).value;
  91.             
  92.             var partner_url = value.split(":")[1];
  93.             
  94.             var listitem = document.createElement("richlistitem");
  95.             var img = document.createElement("image");
  96.             img.setAttribute("src", "chrome://footiefox/skin/"+key+"/button.png");
  97.             img.setAttribute("style", "margin:7px");
  98.             var cb = document.createElement("checkbox");    
  99.             cb.setAttribute("id", "ff_options_language_partner_toolbarbutton_"+key);
  100.             cb.setAttribute("label", partner_url);
  101.             
  102.             
  103.             listitem.appendChild(img);
  104.             listitem.appendChild(cb);
  105.             
  106.             listbox.appendChild(listitem);              
  107.             
  108.  
  109.         } catch(ex){
  110.                     footiefox_d(ex); continue;
  111.         }
  112.     }
  113.     
  114.     
  115. },
  116.  
  117. onRadioModified: function() {
  118.  
  119.     var radio = document.getElementById("radio_license_agreement");
  120.     document.documentElement.getButton("next").disabled = (radio.value != "accepted");
  121. },
  122.  
  123. onWizardCancel: function() {
  124.  
  125.  
  126.     var question = "Would you like to uninstall FootieFox and restart the browser?";
  127.     try {
  128.             
  129.             question = this.dictionary.getString("ff.wizard.alert.uninstall");
  130.             
  131.     } catch (e) {}
  132.     var really = confirm(question);
  133.  
  134.     if (really) {
  135.  
  136.         this.uninstall();
  137.         window.setTimeout(this.restart(), 500);
  138.         
  139.         return true;
  140.         
  141.     } else 
  142.         return false;
  143.     
  144. },
  145.  
  146.   onWizardFinish: function() {
  147.  
  148.  
  149.     if (this.prefNode == null) {
  150.         
  151.         var gDBTPrefService = Components.classes["@mozilla.org/preferences-service;1"]
  152.             .getService(Components.interfaces.nsIPrefService);
  153.         this.prefNode = gDBTPrefService.getBranch("extensions.footiefox.");
  154.         
  155.     }
  156.         
  157.     //license agreement
  158.     var radio_license_agreement = document.getElementById("radio_license_agreement");
  159.     this.prefNode.setCharPref("eula", radio_license_agreement.selectedItem.value);
  160.   
  161.     //partner integration
  162.     var partner_statusbar = document.getElementById("ff_wizard_integrationpage_statusbar");
  163.     this.prefNode.setBoolPref("partner.statusbarlabel", partner_statusbar.checked);
  164.     
  165.     var listbox = document.getElementById("ff_wizard_integrationpage_toolbar_listbox");
  166.     try {
  167.         var buttons = "";
  168.         var cbs = listbox.getElementsByTagName("checkbox");
  169.         
  170.        for (var i=0; i<cbs.length;i++) {
  171.             if (cbs[i].getAttribute("checked")) {
  172.                 var cb_id = cbs[i].getAttribute("id");
  173.                 var partner_id = cb_id.split("_")[5];
  174.                 buttons += partner_id + ":";
  175.             }
  176.         }
  177.  
  178.         this.prefNode.setCharPref("partner.toolbarbuttons", buttons);
  179.  
  180.     } catch(ex){
  181.                 footiefox_d(ex); 
  182.     }
  183.  
  184.     //serial number
  185.     var createserial = document.getElementById("ff_wizard_serialpage_createserial");
  186.     this.prefNode.setBoolPref("serial.agreed", createserial.checked);
  187.     
  188.     if (createserial.checked) {
  189.         var id="";
  190.         var c="0123456789abcefghijklmnopqrstuvwxyz";
  191.         for (var i=0;i<=26;i++) {
  192.         
  193.             id += c.charAt(Math.random()*c.length);
  194.         }
  195.         this.prefNode.setCharPref("serial.number", id);
  196.     
  197.     }
  198.     
  199.     var configurenow = document.getElementById("ff_wizard_donepage_configurenow");
  200.     
  201.     Components.classes["@mozilla.org/observer-service;1"]
  202.                  .getService(Components.interfaces.nsIObserverService)
  203.                  .notifyObservers(null, "footiefoxWizardFinished", configurenow.checked);
  204.  
  205.     
  206.    
  207.     
  208. },
  209.  
  210.   uninstall: function() {
  211.       
  212.     var extensionManager = Components.classes["@mozilla.org/extensions/manager;1"].
  213.               getService(Components.interfaces.nsIExtensionManager);
  214.     var extensionId = "{9fb7d178-155a-4318-9173-1a8eaaea7fe4}";
  215.     extensionManager.uninstallItem(extensionId);
  216.  
  217.   },
  218.  
  219.    
  220.   restart: function() {
  221.   
  222.       
  223.       var appStartup = Components.classes["@mozilla.org/toolkit/app-startup;1"].
  224.                          getService(Components.interfaces.nsIAppStartup);
  225.       appStartup.quit(Components.interfaces.nsIAppStartup.eForceQuit | Components.interfaces.nsIAppStartup.eRestart);
  226.   },
  227.   
  228.   translate: function(element_id, dictionary_id, attribute) {
  229.   
  230.        
  231.     
  232.         if (attribute == null){
  233.             attribute = "label";
  234.         }
  235.         
  236.         if (dictionary_id == null){
  237.             dictionary_id = element_id.replace(/_/g,".");
  238.         }
  239.     
  240.         try {
  241.             var element = document.getElementById(element_id);
  242.             element.setAttribute(attribute, this.dictionary.getString(dictionary_id));
  243.             
  244.         } catch (e) {
  245.             
  246.             //alert("Failed to translate " + element_id);
  247.         }
  248.     },
  249.     
  250.     applyLanguagePackage: function(locale) {
  251.     
  252.         if (locale=="de" || locale.toLowerCase()=="de-at" || locale.toLowerCase()=="de-li" || locale.toLowerCase()=="de-lu" || locale.toLowerCase()=="de-ch") {
  253.             locale ="de-DE";
  254.             
  255.         }
  256.     
  257.     
  258.     
  259.         var stringbundleDictionary = document.getElementById("stringbundle_dictionary");
  260.         
  261.         stringbundleDictionary.setAttribute("src", "chrome://footiefox/locale/"+locale+"/footiefox/footiefox.properties");
  262.         this.dictionary = document.getElementById("stringbundle_dictionary");
  263.         
  264.         //EULA page
  265.         this.translate("ff_wizard_eulapage","ff.wizard.eulapage.label");
  266.         this.translate("ff_wizard_eulapage","ff.wizard.eulapage.description", "description");
  267.         this.translate("ff_wizard_eulapage_text1", null, "value");
  268.         this.translate("ff_wizard_eulapage_text2", null, "value");
  269.         this.translate("ff_wizard_eulapage_license_agree");
  270.         this.translate("ff_wizard_eulapage_license_decline");
  271.         
  272.         //integration page
  273.         this.translate("ff_wizard_integrationpage","ff.wizard.integrationpage.label");
  274.         this.translate("ff_wizard_integrationpage","ff.wizard.integrationpage.description", "description");
  275.         this.translate("ff_wizard_integrationpage_text1", null, "value");
  276.         this.translate("ff_wizard_integrationpage_text2", null, "value");
  277.         this.translate("ff_wizard_integrationpage_text3", null, "value");
  278.         this.translate("ff_wizard_integrationpage_toolbarbutton", "ff.options.language.partner.toolbarbutton", "value");
  279.         this.translate("ff_wizard_integrationpage_statusbar", "ff.options.language.partner.statusbar");
  280.         this.translate("ff_wizard_integrationpage_text4", null, "value");
  281.         
  282.         //serial page
  283.         this.translate("ff_wizard_serialpage","ff.wizard.serialpage.label");
  284.         this.translate("ff_wizard_serialpage","ff.wizard.serialpage.description", "description");
  285.         this.translate("ff_wizard_serialpage_text1", null, "value");
  286.         this.translate("ff_wizard_serialpage_createserial");
  287.         this.translate("ff_wizard_serialpage_text2", "ff.wizard.integrationpage.text4", "value");
  288.         
  289.         //done page
  290.         this.translate("ff_wizard_donepage","ff.wizard.donepage.label");
  291.         
  292.         this.translate("ff_wizard_donepage_text1", null, "value");
  293.         this.translate("ff_wizard_donepage_text2", null, "value");
  294.         this.translate("ff_wizard_donepage_configurenow");
  295.         
  296.  
  297.     }
  298.     
  299. }
  300.  
  301. // Dump a message to Javascript Console
  302. function footiefox_d(msg){
  303.     var acs = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);
  304.     acs.logStringMessage(msg);
  305. }